package com.mindskip.xzs.repository;

import com.mindskip.xzs.domain.ExamPaper;
import com.mindskip.xzs.domain.other.KeyValue;
import com.mindskip.xzs.viewmodel.admin.exam.ExamPaperPageRequestVM;
import com.mindskip.xzs.viewmodel.student.dashboard.PaperFilter;
import com.mindskip.xzs.viewmodel.student.dashboard.PaperInfo;
import com.mindskip.xzs.viewmodel.student.exam.ExamPaperPageVM;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

@Mapper
public interface ExamPaperMapper extends BaseMapper<ExamPaper> {

    // 分页查询ExamPaper对象
    List<ExamPaper> page(ExamPaperPageRequestVM requestVM);

    // 分页查询任务相关的ExamPaper对象
    List<ExamPaper> taskExamPage(ExamPaperPageRequestVM requestVM);

    // 分页查询学生相关的ExamPaper对象
    List<ExamPaper> studentPage(ExamPaperPageVM requestVM);

    // 根据条件筛选获取试卷信息
    List<PaperInfo> indexPaper(PaperFilter paperFilter);

    // 查询所有试卷的数量
    Integer selectAllCount();

    // 根据时间范围查询试卷数量，返回KeyValue对象列表
    List<KeyValue> selectCountByDate(@Param("startTime") Date startTime, @Param("endTime") Date endTime);

    // 更新任务试卷关联关系
    int updateTaskPaper(@Param("taskId") Integer taskId, @Param("paperIds") List<Integer> paperIds);

    // 清除任务试卷关联关系
    int clearTaskPaper(@Param("paperIds") List<Integer> paperIds);

    // 根据用户ID查询创建的试卷列表
    List<ExamPaper> getExamPaperByCreateUserId(Integer id);
}
